package org.saxion.aktiehuis.services;

import java.util.List;


import org.saxion.aktiehuis.DAO.BestellingMock;
import org.saxion.aktiehuis.DAO.interfaces.BestellingDAO;
import org.saxion.aktiehuis.DAO.interfaces.KlantDAO;
import org.saxion.aktiehuis.DAO.interfaces.ProductDAO;
import org.saxion.aktiehuis.model.BesteldProduct;
import org.saxion.aktiehuis.model.Bestelling;
import sender.*;

public class BestellingManagement {
	
	private BestellingDAO bestellingDao;
	private KlantDAO klantDao;
	private BestellingSender sender = null;

	private void addProduct( int bestellingId, int producId, int Aantal) throws Exception {
		bestellingDao.addProduct(bestellingId, producId, Aantal);
	}
	
	public void addBestelling(int bestelId, List<BesteldProduct> besteldProducten) throws Exception
	{
		for(BesteldProduct besteldProduct : besteldProducten )
		{
			bestellingDao.addProduct(bestelId, besteldProduct.getProduct().getId(), besteldProduct.getAantal());
		}
	}

	public Bestelling getBestelling(int bestellingId)  throws Exception {
		return bestellingDao.getBestelling(bestellingId);
	}

	public List<Bestelling> getBestellingKlant(int klantId)  throws Exception {
		
		return bestellingDao.getBestellingKlant(klantId);
	}

	public void bevestigBestelling(int klantNr,int bestellingId)  throws Exception {
		
		//verstuur bestelling
	
		if(sender == null)
			sender = new BestellingSender(getBestelling(bestellingId));
		else
			sender.setBestelling(getBestelling(bestellingId));
	
		sender.verstuurBestelling();
		
		bestellingDao.bevestigBestelling(bestellingId);	
	}

	public int getBestelNr(String klant) throws Exception
	{
		Integer klantId = klantDao.getKlantId(klant);
		if(klantId == null)
		{
			klantId = klantDao.addKlant(klant);
		}
		int bestelId = bestellingDao.nieuweBestelling(klantId);

		return bestelId;
	}
	
	public void setBestellingDoa(BestellingDAO bestellingDao) throws Exception
	{
		this.bestellingDao = bestellingDao;
	}
	
	public void setKlantDao(KlantDAO klantDao) throws Exception
	{
		this.klantDao = klantDao;
	}
	
	
	public void setBestellingDao(BestellingDAO bestellingDao) throws Exception
	{
		this.bestellingDao = bestellingDao;
	}
	


}
